Technical Q&A

QTW 97 - Endian Concerns When Playing 'snd ' Resources (08-November-1999)


Q: Do I need to byte-swap a 'snd ' resource before passing it to the Sound Manager SndPlay function on Windows in order for it to play correctly? Currently I'm reading the resource into memory myself.

A: No, you don't, providing you use the Resource Manager functions to read in the resource.

Standard Macintosh 'snd ' resources are big-endian on disk, and native-endian in RAM (like virtually all other resources). It is the responsibility of the Resource Manager to do the necessary flipping. The Sound Manager assumes all 'snd ' resources come into RAM via calls to Resource Manager functions like GetResource. If you read the resource into memory yourself, you have bypassed this mechanism, and you will end up with a non native-endian 'snd ' resource. Since the QuickTime & Sound Manager API's assume the 'snd ' resource is native-endian (little-endian in this case), they are getting very confused.

The easy way to solve this is to use the Resource Manager functions to read in the resource. The hard way is to parse through the resource (make sure you know about all the possible variants!) and flip the bytes yourself.


-- Scott Kuechle
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question

To contact us, please use the Contact Us page.